package com.jrx.anytxn.accounting.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 *  
 * 表:ga_product_summary_transition 
 * @author mac 
 * @date 2020-05-08 
 */
public class GaProductSummaryTransition implements Serializable {
    /**
     * 主键
     * 表字段:id
     */
    private Long id;

    /**
     * 租戶id
     * 表字段:tenant_id
     */
    private String tenantId;

    /**
     * 科目号
     * 表字段:product_id
     */
    private String productId;

    /**
     * 业务日期
     * 表字段:bussiness_date
     */
    private Date bussinessDate;

    /**
     * 批次任务id（与分库绑定
     * 表字段:batch_task_id
     */
    private String batchTaskId;

    /**
     * 机构号
     * 表字段:organization_id
     */
    private String organizationId;

    /**
     * 正常本金余额
     * 表字段:nomal_prin_bal
     */
    private BigDecimal nomalPrinBal;

    /**
     * 逾期本金余额
     * 表字段:over_due_prin_bal
     */
    private BigDecimal overDuePrinBal;

    /**
     * 呆滞本金余额
     * 表字段:dead_prin_bal
     */
    private BigDecimal deadPrinBal;

    /**
     * 呆帐本金余额
     * 表字段:bad_prin_bal
     */
    private BigDecimal badPrinBal;

    /**
     * 正常应收利息余额
     * 表字段:nomal_intr_bal
     */
    private BigDecimal nomalIntrBal;

    /**
     * 逾期应收利息余额
     * 表字段:over_due_intr_bal
     */
    private BigDecimal overDueIntrBal;

    /**
     * 应收罚息余额
     * 表字段:pent_intr_bal
     */
    private BigDecimal pentIntrBal;

    /**
     * 应收已抛复利余额
     * 表字段:comp_intr_bal
     */
    private BigDecimal compIntrBal;

    /**
     * 应计利息余额
     * 表字段:accu_intr_bal
     */
    private BigDecimal accuIntrBal;

    /**
     * 应计罚息余额
     * 表字段:accu_pent_intr_bal
     */
    private BigDecimal accuPentIntrBal;

    /**
     * 应计复利余额
     * 表字段:accu_comp_intr_bal
     */
    private BigDecimal accuCompIntrBal;

    /**
     * 创建时间
     * 表字段:create_time
     */
    private Date createTime;

    /**
     * 最后更新时间
     * 表字段:update_time
     */
    private Date updateTime;

    /**
     * 最后更新操作员
     * 表字段:update_by
     */
    private String updateBy;

    /**
     * 记录版本号
     * 表字段:record_version_number
     */
    private Integer recordVersionNumber;

    /**
     * 关注-本金余额
     * 表字段:classify1_prin_bal
     */
    private BigDecimal classify1PrinBal;

    /**
     * 次级-本金余额
     * 表字段:classify2_prin_bal
     */
    private BigDecimal classify2PrinBal;

    /**
     * 可疑-本金余额
     * 表字段:classify3_prin_bal
     */
    private BigDecimal classify3PrinBal;

    /**
     * 损失-本金余额
     * 表字段:classify4_prin_bal
     */
    private BigDecimal classify4PrinBal;

    /**
     * 损失-减值计提余额
     * 表字段:classify1_impairment_bal
     */
    private BigDecimal classify1ImpairmentBal;

    /**
     * 次级-减值计提余额
     * 表字段:classify2_impairment_bal
     */
    private BigDecimal classify2ImpairmentBal;

    /**
     * 可疑-减值计提余额
     * 表字段:classify3_impairment_bal
     */
    private BigDecimal classify3ImpairmentBal;

    /**
     * 损失-减值计提余额
     * 表字段:classify4_impairment_bal
     */
    private BigDecimal classify4ImpairmentBal;

    /**
     * 获取主键
     * @return id Long
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置主键
     * @param id 主键
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取租戶id
     * @return tenantId String
     */
    public String getTenantId() {
        return tenantId;
    }

    /**
     * 设置租戶id
     * @param tenantId 租戶id
     */
    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    /**
     * 获取科目号
     * @return productId String
     */
    public String getProductId() {
        return productId;
    }

    /**
     * 设置科目号
     * @param productId 科目号
     */
    public void setProductId(String productId) {
        this.productId = productId;
    }

    /**
     * 获取业务日期
     * @return bussinessDate Date
     */
    public Date getBussinessDate() {
        return bussinessDate;
    }

    /**
     * 设置业务日期
     * @param bussinessDate 业务日期
     */
    public void setBussinessDate(Date bussinessDate) {
        this.bussinessDate = bussinessDate;
    }

    /**
     * 获取批次任务id（与分库绑定
     * @return batchTaskId String
     */
    public String getBatchTaskId() {
        return batchTaskId;
    }

    /**
     * 设置批次任务id（与分库绑定
     * @param batchTaskId 批次任务id（与分库绑定
     */
    public void setBatchTaskId(String batchTaskId) {
        this.batchTaskId = batchTaskId;
    }

    /**
     * 获取机构号
     * @return organizationId String
     */
    public String getOrganizationId() {
        return organizationId;
    }

    /**
     * 设置机构号
     * @param organizationId 机构号
     */
    public void setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
    }

    /**
     * 获取正常本金余额
     * @return nomalPrinBal BigDecimal
     */
    public BigDecimal getNomalPrinBal() {
        return nomalPrinBal;
    }

    /**
     * 设置正常本金余额
     * @param nomalPrinBal 正常本金余额
     */
    public void setNomalPrinBal(BigDecimal nomalPrinBal) {
        this.nomalPrinBal = nomalPrinBal;
    }

    /**
     * 获取逾期本金余额
     * @return overDuePrinBal BigDecimal
     */
    public BigDecimal getOverDuePrinBal() {
        return overDuePrinBal;
    }

    /**
     * 设置逾期本金余额
     * @param overDuePrinBal 逾期本金余额
     */
    public void setOverDuePrinBal(BigDecimal overDuePrinBal) {
        this.overDuePrinBal = overDuePrinBal;
    }

    /**
     * 获取呆滞本金余额
     * @return deadPrinBal BigDecimal
     */
    public BigDecimal getDeadPrinBal() {
        return deadPrinBal;
    }

    /**
     * 设置呆滞本金余额
     * @param deadPrinBal 呆滞本金余额
     */
    public void setDeadPrinBal(BigDecimal deadPrinBal) {
        this.deadPrinBal = deadPrinBal;
    }

    /**
     * 获取呆帐本金余额
     * @return badPrinBal BigDecimal
     */
    public BigDecimal getBadPrinBal() {
        return badPrinBal;
    }

    /**
     * 设置呆帐本金余额
     * @param badPrinBal 呆帐本金余额
     */
    public void setBadPrinBal(BigDecimal badPrinBal) {
        this.badPrinBal = badPrinBal;
    }

    /**
     * 获取正常应收利息余额
     * @return nomalIntrBal BigDecimal
     */
    public BigDecimal getNomalIntrBal() {
        return nomalIntrBal;
    }

    /**
     * 设置正常应收利息余额
     * @param nomalIntrBal 正常应收利息余额
     */
    public void setNomalIntrBal(BigDecimal nomalIntrBal) {
        this.nomalIntrBal = nomalIntrBal;
    }

    /**
     * 获取逾期应收利息余额
     * @return overDueIntrBal BigDecimal
     */
    public BigDecimal getOverDueIntrBal() {
        return overDueIntrBal;
    }

    /**
     * 设置逾期应收利息余额
     * @param overDueIntrBal 逾期应收利息余额
     */
    public void setOverDueIntrBal(BigDecimal overDueIntrBal) {
        this.overDueIntrBal = overDueIntrBal;
    }

    /**
     * 获取应收罚息余额
     * @return pentIntrBal BigDecimal
     */
    public BigDecimal getPentIntrBal() {
        return pentIntrBal;
    }

    /**
     * 设置应收罚息余额
     * @param pentIntrBal 应收罚息余额
     */
    public void setPentIntrBal(BigDecimal pentIntrBal) {
        this.pentIntrBal = pentIntrBal;
    }

    /**
     * 获取应收已抛复利余额
     * @return compIntrBal BigDecimal
     */
    public BigDecimal getCompIntrBal() {
        return compIntrBal;
    }

    /**
     * 设置应收已抛复利余额
     * @param compIntrBal 应收已抛复利余额
     */
    public void setCompIntrBal(BigDecimal compIntrBal) {
        this.compIntrBal = compIntrBal;
    }

    /**
     * 获取应计利息余额
     * @return accuIntrBal BigDecimal
     */
    public BigDecimal getAccuIntrBal() {
        return accuIntrBal;
    }

    /**
     * 设置应计利息余额
     * @param accuIntrBal 应计利息余额
     */
    public void setAccuIntrBal(BigDecimal accuIntrBal) {
        this.accuIntrBal = accuIntrBal;
    }

    /**
     * 获取应计罚息余额
     * @return accuPentIntrBal BigDecimal
     */
    public BigDecimal getAccuPentIntrBal() {
        return accuPentIntrBal;
    }

    /**
     * 设置应计罚息余额
     * @param accuPentIntrBal 应计罚息余额
     */
    public void setAccuPentIntrBal(BigDecimal accuPentIntrBal) {
        this.accuPentIntrBal = accuPentIntrBal;
    }

    /**
     * 获取应计复利余额
     * @return accuCompIntrBal BigDecimal
     */
    public BigDecimal getAccuCompIntrBal() {
        return accuCompIntrBal;
    }

    /**
     * 设置应计复利余额
     * @param accuCompIntrBal 应计复利余额
     */
    public void setAccuCompIntrBal(BigDecimal accuCompIntrBal) {
        this.accuCompIntrBal = accuCompIntrBal;
    }

    /**
     * 获取创建时间
     * @return createTime Date
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置创建时间
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取最后更新时间
     * @return updateTime Date
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置最后更新时间
     * @param updateTime 最后更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取最后更新操作员
     * @return updateBy String
     */
    public String getUpdateBy() {
        return updateBy;
    }

    /**
     * 设置最后更新操作员
     * @param updateBy 最后更新操作员
     */
    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

    /**
     * 获取记录版本号
     * @return recordVersionNumber Integer
     */
    public Integer getRecordVersionNumber() {
        return recordVersionNumber;
    }

    /**
     * 设置记录版本号
     * @param recordVersionNumber 记录版本号
     */
    public void setRecordVersionNumber(Integer recordVersionNumber) {
        this.recordVersionNumber = recordVersionNumber;
    }

    /**
     * 获取关注-本金余额
     * @return classify1PrinBal BigDecimal
     */
    public BigDecimal getClassify1PrinBal() {
        return classify1PrinBal;
    }

    /**
     * 设置关注-本金余额
     * @param classify1PrinBal 关注-本金余额
     */
    public void setClassify1PrinBal(BigDecimal classify1PrinBal) {
        this.classify1PrinBal = classify1PrinBal;
    }

    /**
     * 获取次级-本金余额
     * @return classify2PrinBal BigDecimal
     */
    public BigDecimal getClassify2PrinBal() {
        return classify2PrinBal;
    }

    /**
     * 设置次级-本金余额
     * @param classify2PrinBal 次级-本金余额
     */
    public void setClassify2PrinBal(BigDecimal classify2PrinBal) {
        this.classify2PrinBal = classify2PrinBal;
    }

    /**
     * 获取可疑-本金余额
     * @return classify3PrinBal BigDecimal
     */
    public BigDecimal getClassify3PrinBal() {
        return classify3PrinBal;
    }

    /**
     * 设置可疑-本金余额
     * @param classify3PrinBal 可疑-本金余额
     */
    public void setClassify3PrinBal(BigDecimal classify3PrinBal) {
        this.classify3PrinBal = classify3PrinBal;
    }

    /**
     * 获取损失-本金余额
     * @return classify4PrinBal BigDecimal
     */
    public BigDecimal getClassify4PrinBal() {
        return classify4PrinBal;
    }

    /**
     * 设置损失-本金余额
     * @param classify4PrinBal 损失-本金余额
     */
    public void setClassify4PrinBal(BigDecimal classify4PrinBal) {
        this.classify4PrinBal = classify4PrinBal;
    }

    /**
     * 获取损失-减值计提余额
     * @return classify1ImpairmentBal BigDecimal
     */
    public BigDecimal getClassify1ImpairmentBal() {
        return classify1ImpairmentBal;
    }

    /**
     * 设置损失-减值计提余额
     * @param classify1ImpairmentBal 损失-减值计提余额
     */
    public void setClassify1ImpairmentBal(BigDecimal classify1ImpairmentBal) {
        this.classify1ImpairmentBal = classify1ImpairmentBal;
    }

    /**
     * 获取次级-减值计提余额
     * @return classify2ImpairmentBal BigDecimal
     */
    public BigDecimal getClassify2ImpairmentBal() {
        return classify2ImpairmentBal;
    }

    /**
     * 设置次级-减值计提余额
     * @param classify2ImpairmentBal 次级-减值计提余额
     */
    public void setClassify2ImpairmentBal(BigDecimal classify2ImpairmentBal) {
        this.classify2ImpairmentBal = classify2ImpairmentBal;
    }

    /**
     * 获取可疑-减值计提余额
     * @return classify3ImpairmentBal BigDecimal
     */
    public BigDecimal getClassify3ImpairmentBal() {
        return classify3ImpairmentBal;
    }

    /**
     * 设置可疑-减值计提余额
     * @param classify3ImpairmentBal 可疑-减值计提余额
     */
    public void setClassify3ImpairmentBal(BigDecimal classify3ImpairmentBal) {
        this.classify3ImpairmentBal = classify3ImpairmentBal;
    }

    /**
     * 获取损失-减值计提余额
     * @return classify4ImpairmentBal BigDecimal
     */
    public BigDecimal getClassify4ImpairmentBal() {
        return classify4ImpairmentBal;
    }

    /**
     * 设置损失-减值计提余额
     * @param classify4ImpairmentBal 损失-减值计提余额
     */
    public void setClassify4ImpairmentBal(BigDecimal classify4ImpairmentBal) {
        this.classify4ImpairmentBal = classify4ImpairmentBal;
    }

    public String getLoanId() {
        return loanId;
    }

    public void setLoanId(String loanId) {
        this.loanId = loanId;
    }

    private String loanId;


    public GaProductSummaryTransition add(GaProductSummaryTransition transition) {
        this.nomalPrinBal = this.nomalPrinBal.add(transition.getNomalPrinBal());
        this.overDuePrinBal = this.overDuePrinBal.add(transition.getOverDuePrinBal());
        this.deadPrinBal = this.deadPrinBal.add(transition.getDeadPrinBal());
        this.badPrinBal = this.badPrinBal.add(transition.getBadPrinBal());
        this.nomalIntrBal = this.nomalIntrBal.add(transition.getNomalIntrBal());
        this.overDueIntrBal = this.overDueIntrBal.add(transition.getOverDueIntrBal());
        this.pentIntrBal = this.pentIntrBal.add(transition.getPentIntrBal());
        this.compIntrBal = this.compIntrBal.add(transition.getCompIntrBal());
        this.accuIntrBal = this.accuIntrBal.add(transition.getAccuIntrBal());
        this.accuPentIntrBal = this.accuPentIntrBal.add(transition.getAccuPentIntrBal());
        this.accuCompIntrBal = this.accuCompIntrBal.add(transition.getAccuCompIntrBal());
        this.classify1PrinBal = this.classify1PrinBal.add(transition.getClassify1PrinBal());
        this.classify2PrinBal = this.classify2PrinBal.add(transition.getClassify2PrinBal());
        this.classify3PrinBal = this.classify3PrinBal.add(transition.getClassify3PrinBal());
        this.classify4PrinBal = this.classify4PrinBal.add(transition.getClassify4PrinBal());
        return this;
    }
}